/* Universidad del Valle de Guatemala
 * CC2003 - Algoritmos y Estructuras de Datos
 * HOJA DE TRABAJO #5
 * Fecha de Entrega: Jueves 1 de Septiembre de 2011
 */

/**
 * Clase que define las acciones que pueden realizar las Nodos del Stack.
 * @author José Antonio Bagur - 10275
 */

public class Node <E> {
    
    /* ATRIBUTOS DE LA CLASE NODE */
    private E element;
    private Node <E> next;
    
    /* CONSTRUCTORES DE LA CLASE NODE */
    
    /*
     * Constructor de la Clase Node, crea un nodo con referencias únicamente a su elemento.
     */
    public Node(E e) {
        this(e, null);
    }
    
    /* 
     * Constructor de la Clase Node, crea un nodo con referencias a su elemento y al próximo nodo.
     */
    public Node(E e, Node <E> n) {
        this.element = e;
        this.next = n;        
    }
    
    /* MÉTODO SETNEXT() */
    
    /**
     * Método que permite definir un nuevo Nodo. 
     * @param nuevo elemento a definir.
     */
    public void setNext(Node <E> nuevo) {
        this.next = nuevo;
    }
    
    /* MÉTODO SETELEMENT() */
    
    /**
     * Método que permite definir un nuevo elemento del Nodo
     * @param nuevo elemento a definir.
     */
    public void setElement(E nuevo) {
        this.element = nuevo;
    }
    
    /* MÉTODO GETNEXT() */
    
    /**
     * Método que permite obtener el próximo Nodo.
     * @return next siguiente Nodo.
     */
    public Node <E> getNext() {
        return next;
    }
    
    /* MÉTODO GETELEMENT() */
    
    /**
     * Método que permite conocer el elemento presente en el Nodo.
     * @return 
     */
    public E getElement() {
        return element;
    }
    
    /* MÉTODO HASNEXT() */
    
    /**
     * Método que permite conocer si existe un nuevo elemento para el Nodo.
     * @return True si existe un nuevo elemento, False si no existe un nuevo elemento.
     */
    public boolean hasNext() {
        if(next != null)
            return true;
        return false;
    }    
    
} // FIN DE LA CLASE NODE 
